Memory arrangements are used in a large number of devices in order to store the data to be processed or generated in operation. A so-called main memory is arranged for providing large amounts of data, such as program data. As a rule, the main memory is not volatile. Apart from the main memory, intermediate memories which are volatile in most cases, are frequently also provided which can be accessed more quickly. In addition, there are also removable memory media which are connected to a suitable device for operation. In memory arrangements such as those mentioned above, a suitable device for managing the memory must be provided.
Memory arrangements typically comprise a large number of memory locations. In each memory location, a data word, which can comprise a number of bits or bytes can be stored. The memory locations are accessed via an address decoder with address inputs and data inputs and outputs. An external address is allocated to each memory location. In the arrangement described above, no checking capability is provided for checking whether the data content of the memory locations has changed during the storing. The changes can be of a random type such as, for example, due to natural radiation; but they can also be caused by deliberate manipulation for example, attacks such as “forcing” or aimed radiation.
To detect changes of stored data words, a part of the memory locations in many memory arrangements is reserved for redundant information. Redundant information allows conclusions to be drawn as to whether the stored data have been changed. Redundant information is generated, for example, in the form of a check word, either separately for each data word or for a record of a number of data words and stored at another place or another memory location. The stored check words have a given relationship with their associated data word or associated record of data words. During a later check of the check word with the associated data word or the associated record of data words, a check is made as to whether the given relationship exists. If this is not the case, the existence of a manipulation or of a change in the stored data words can be concluded.
A particularly simple form of redundant data is the so-called parity bit which is appended to a data word and specifies whether there is an even or odd number of a logical value, e.g. a logical one in the data word. Due to the parity bit, only an odd number of bit errors can be detected. More complex check words are based on so-called error-detecting or error-correcting codes which are suitable for detecting a number of bit errors or even correcting errors to a certain extent. Error-detecting or error-correcting codes are usually used for protecting a record of a number of data words by means of an associated check word.
The disadvantageous factor in this arrangement is that a relatively large proportion of the memory area is reserved for these check words and is not available for actual data storage. If a check word is allocated to four data words, 20% of the memory locations are reserved and are not available for actual data storage. This also applies if the data to be stored are not considered to be sensitive by the application or the user and do not need additional checking. Independently of whether the stored data are upgraded to be worthy of protection, a part of the memory locations is thus never accessible.